home *** CD-ROM | disk | FTP | other *** search
-
- /*© Copyright 1988-1993 UserLand Software, Inc. All Rights Reserved.*/
-
- #include "iacinternal.h"
-
-
- #if __option(mc68881) || !__option(native_fp)
-
- #define useSane
-
- #include <sane.h>
-
- #else
-
- #undef useSane
-
- #endif
-
-
- #if __option (double_8)
-
- #error Can't compile this project with the 8 byte doubles option set
-
- /*use short double instead if you need 8 byte IEEE (SANE) doubles*/
-
- #endif
-
-
-
- Boolean IACpushdoubleparam (double val, OSType keyword) {
-
- register OSErr ec;
- extended value;
-
- #ifdef useSane
- x96tox80 (&val, &value); /*convert from double to extended*/
- #else
- value = val; /*no conversion needed, just copy it*/
- #endif
-
- ec = AEPutParamPtr (
-
- IACglobals.event, (AEKeyword) keyword, typeExtended,
-
- (Ptr) &value, sizeof (value));
-
- IACglobals.errorcode = ec;
-
- return (ec == noErr);
- } /*IACpushdoubleparam*/
-
-
- Boolean IACreturndouble (double x) {
-
- register OSErr ec;
- extended value;
-
- #ifdef useSane
- x96tox80 (&x, &value);
- #else
- value = x;
- #endif
-
- ec = AEPutParamPtr (
-
- IACglobals.reply, keyDirectObject, typeExtended, (Ptr)&value,
-
- (Size) sizeof (value));
-
- IACglobals.errorcode = ec;
-
- return (ec == noErr);
- } /*IACreturndouble*/
-
-
- Boolean IACgetdoubleparam (OSType keyword, double *val) {
-
- register OSErr ec;
- DescType actualtype;
- Size actualsize;
- extended value;
-
- ec = AEGetParamPtr (
-
- IACglobals.event, (AEKeyword) keyword, typeExtended,
-
- &actualtype, (Ptr) &value, sizeof (value), &actualsize);
-
- IACglobals.errorcode = ec;
-
- if (ec != noErr) {
-
- IACparamerror (ec, "\pdouble", keyword);
-
- return (false);
- }
-
- IACglobals.nextparamoptional = false; /*must be reset for each param*/
-
- #ifdef useSane
- x80tox96 (&value, val);
- #else
- *val = value;
- #endif
-
- return (true);
- } /*IACgetdoubleparam*/
-
-
- Boolean IACgetdoubleitem (AEDescList *list, long n, double *val) {
-
- register OSErr ec;
- extended value;
- DescType key;
- DescType typeCode;
- Size actualSize;
-
- if ((*list).descriptorType == typeAERecord) {
-
- ec = AEGetKeyPtr (list, n, typeExtended, &typeCode, (Ptr) &value, sizeof (value), &actualSize);
-
- if (ec != errAEDescNotFound)
- goto done;
- }
-
- ec = AEGetNthPtr (list, n, typeExtended, &key, &typeCode, (Ptr) &value, sizeof (value), &actualSize);
-
- done:
-
- IACglobals.errorcode = ec;
-
- #ifdef useSane
- x80tox96 (&value, val);
- #else
- *val = value;
- #endif
-
- return (ec == noErr);
- } /*IACgetdoubleitem*/
-
-
- Boolean IACpushdoubleitem (AEDescList *list, double val, long n) {
-
- register OSErr ec;
- extended value;
-
- #ifdef useSane
- x96tox80 (&val, &value);
- #else
- value = val;
- #endif
-
- if ((*list).descriptorType == typeAERecord)
- ec = AEPutKeyPtr (list, n, typeExtended, (Ptr)&value, sizeof (value));
- else
- ec = AEPutPtr (list, n, typeExtended, (Ptr)&value, sizeof (value));
-
- IACglobals.errorcode = ec;
-
- return (ec == noErr);
- } /*IACpushdoubleitem*/
-
-
-